分布式集群系统之springcloudAlibaba

您所在的位置:网站首页 nacos 设置单机启动 分布式集群系统之springcloudAlibaba

分布式集群系统之springcloudAlibaba

2023-04-07 02:43| 来源: 网络整理| 查看: 265

一、nacos是什么?

Dynamic Naming and Configuration Service 动态命名和配置服务

Nacos = Eureka+Config+Bus 注册中心与配置中心的组合

二、nacos能干吗?

1. 替代Eureka做注册中心

2. 替代Config做配置中心

三、怎么玩?

### 下载 GitHub - alibaba/nacos: an easy-to-use dynamic service discovery, configuration and service management platform for building cloud native applications.

### 官网 home

### 安装

1. 本案例采用 1.1.4

2. Release 1.1.4(Oct 24th, 2019) · alibaba/nacos tar.gz是linux,zip是windows

3. 解压 cmd 进入 bin目录下

4. startup.cmd 启动程序

5. 进入 http://localhost:8848/nacos

6. 默认账号密码都是 nacos

# 作为服务注册中心,引入nacos maven

### 服务提供者模块

1. 父 pom

com.alibaba.cloud spring-cloud-alibaba-dependencies 2.2.0.RELEASE pom import

2. 子 pom

com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery

3. yml

server: port: 9001 spring: application: name: nacos-payment-provider cloud: nacos: server-addr: localhost:8848 # Nacos地址 management: endpoints: web: exposure: include: '*' #暴露端口

5. 测试

http://localhost:9001/payment/nacos/1

进入nocas查看是否配置成功

### 消费者模块

==Nacos自带Ribbon实现负载均衡,Nacos支持AP与CP的切换==

1. 新建消费者模块

2. pom 同 9001 一样

3. yml

server: port: 83 spring: application: name: nacos-order-consumer cloud: nacos: server-addr: localhost:8848 # 消费者要去访问的微服务名称 service-url: nacos-user-service: http://nacos-payment-provider

4. 主启动类 同 9001 一样

5. config类,

@Configuration public class ApplicationContextConfig { @Bean @LoadBalanced public RestTemplate getRestTemplate(){ return new RestTemplate(); } }

6. controller

@RestController @Slf4j public class OrderNacosController { @Resource private RestTemplate restTemplate; @Value(("${service-url.nacos-user-service}")) private String serverURL; @GetMapping(value = "/consumer/payment/nacos/{id}") public String paymentInfo(@PathVariable("id") Long id){ return restTemplate.getForObject(serverURL+"/payment/nacos/"+id,String.class); } }

7. 测试

http://localhost:83/consumer/payment/nacos/1

# 作为配置中心

### 配置

1. 建模块cloud-ali-config-nacos-client3377

2. pom

com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery com.alibaba.cloud spring-cloud-starter-alibaba-nacos-config

3. yml:有application与bootstrap

application

spring: profiles: active: dev # 表示开发环境

bootstrap

server: port: 3377 spring: application: name: nacos-config-client cloud: nacos: discovery: server-addr: localhost:8848 # 服务注册中心 config: server-addr: localhost:8848 # 服务注册中心 file-extension: yaml # 指定yaml格式的配置

4. 主启动,添加两个注解

@SpringBootApplication @EnableDiscoveryClient

5. controller

@RestController @RefreshScope // 动态刷新 public class ConfigClientController { @Value("/config.info") private String configInfo; @GetMapping("/config/info") public String getConfigInfo(){ return configInfo; } }

6. 配置dataid

``${prefix}-${spring.profile.active}.${file-extension}``

* prefix 默认为 Website may be available for web development ideas 的值,也可以通过配置项 spring.cloud.nacos.config.prefix来配置。

* spring.profile.active 即为当前环境对应的 profile,详情可以参考 Spring Boot文档。 注意:当 spring.profile.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 ${prefix}.${file-extension}

* file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 properties 和 yaml 类型。

* 得到 data id为

${prefix}-${spring.profile.active}.${file-extension} ${spring-application-name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}

### 分组

1. Nacos默认的命名空间是 public ,Namespace主要实现隔离。

比如说现在有三个环境:开发,测试,生产环境,就可以创建三个Namespace,不同的Namespace之间是隔离的。

2. Group默认是 DEFAULT_GROUP,Group 可以把不同的微服务划分到一个组里去。

3. service就是微服务,一个微服务可以包含多个 Cluster (集群)

4. Instance就是微服务的实例

### 三种方案加载配置

###### DataID

指定 spring.profile.active 与配置文件的DataID来使不同环境下读取不同的配置

默认空难攻坚+默认分组+新建dev和test两个DataID

1. Nacos配置中心新建nacos-config-client-test.yaml

2. 将spring中的配置spring.profile.active改成test,就会加载Nacos中新建的yaml

###### Group

1. Nacos中新建配置 nacos-config-client-info.yaml ,分组为 DEV_GROUP

2. Nacos中新建配置 nacos-config-client-info.yaml ,分组为 TEST_GROUP

3. 将 spring.profile.active改成 info

4. 增加配置 spring.cloud.nacos.config.group 指定组名,选择调用哪个组的文件

5. 测试:http://localhost:3377/config/info

###### Namespace

1. 找到左侧命名空间,新建test与dev命名空间

2. dev 命名空间新建 nacos-config-client-dev.yaml 分组为 DEV_GROUP

3. yml文件

spring: application: name: nacos-config-client cloud: nacos: config: # 这个为命名空间的流水号 namespace: 625e1f16-7820-412f-84d0-890d0092577a group: DEV_GROUP

4. 测试:http://localhost:3377/config/info

###### 总结

如同包一样 Namespace>Group>DataID

# Nacos集群与持久化配置(重要)

### 解决问题

1. 如果Nacos挂掉怎么办

2. Nacos停机了,但是有些数据仍需要保留

### 持久化配置

###### Nacos支持三种部署模式

1. 单机模式

2. 集群模式-用于生产环境

3. 多集群模式-用于多数据中心场景

默认Nacos使用嵌入式数据库derby来实现数据的存储。但是如果启动多个默认配置下的Nacos节点,数据存储是存在一致性问题的。为了解决这个问题,Nacos采用集中式存储的方式来支持集群化部署,目前只支持MySQL的存储。

###### 切换数据库

1. 安装数据库,版本要求:5.6.5+

2. 初始化mysql数据库,数据库初始化文件:nacos\conf\nacos-mysql.sql

3. 修改nacos\conf\application.properties文件,增加支持mysql数据源配置(目前只支持mysql),添加mysql数据源的url、用户名和密码。

spring.datasource.platform=mysql db.num=1 db.url.0=jdbc:mysql://11.162.196.16:3306/nacos_devtest?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true # 更改数据库名,更改127.0.0.1 db.user=nacos_devtest #更改用户名 db.password=youdontknow #更改密码

4. 重启Nacos

5. 观察到之前写过的配置全部消失,因为切换了数据库

### 集群

###### 前提配置

1个Nginx+3个nacos注册中心+1个mysql

###### 下载linux版

1. 下载:https://github.com/alibaba/nacos/releases

2. 解压

3. 同windows一样,需要在linux下设置mysql为nacos持久化存储

###### linux安装mysql

1. 下载:``wget fw_error_www

2. 将安装包放到指定目录下,解压tar xzvf mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz

3. 移动到 /usr/local目录下

Centos系统安装mysql-5.7.22(tar.gz安装包)_mysql5.7.22的安装包_JAVA菜鸟程序员的博客-CSDN博客

###### 创建 nacos 数据库

1. source /usr/local/nacos/conf/nacos-mysql.sql

2. 修改nacos\conf\application.properties文件,增加支持mysql数据源配置(目前只支持mysql),添加mysql数据源的url、用户名和密码。

spring.datasource.platform=mysql db.num=1 db.url.0=jdbc:mysql://11.162.196.16:3306/nacos_devtest?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true # 更改数据库名,更改127.0.0.1 db.user=nacos_devtest #更改用户名 db.password=youdontknow #更改密码

###### 集群配置

1. 复制nacos/config下的 cluster.config.example 重命名为 cluster.config

2. 修改文件内容,ip地址查看 id addr

192.168.150.66:3333 192.168.150.66:4444 192.168.150.66:5555

3. 配置 bin 下的404 Not Found

4. 安装Nginx

LINUX安装nginx详细步骤_大蛇王的博客-CSDN博客

命令: cd /usr/local/nginx/sbin

启动,关闭,重启,命令:

./nginx 启动

./nginx -s stop 关闭

./nginx -s reload 重启

5. 配置nginx linux上搭建Nacos集群(步骤详细,linux小白也能搞定) - 键盘三个键 - 博客园

6. 注意

1. 关闭防火墙 2. 打开mysql服务 3. 有错误要去nacos的log文件夹内查询 4. 不要将安装包在windows下载后直接拖到linux

7. 测试

将idea对应端口换成 nginx 地址即可:192.168.150.66:1111



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3